//https://www.luogu.com.cn/record/183265357


#include<iostream>
#include<cstring>
using namespace std;

// 定义数组a用于存储拆分后的数字，t用于记忆化搜索
long long a[101], t[2][2][2][2][10][10][100];
// t数组各维对应：
// 1. 是否到达极值点
// 2. 是否有4
// 3. 是否有8
// 4. 是否有3个连在一起的数字
// 5. 前一个数字
// 6. 再前一个数字

// 深度优先搜索函数
long long dfs(int k, int last1, int last2, bool ok, bool flag4, bool flag8, bool flag_3_) {
    // k：当前位数，last1：前一个数位，last2：前两个数位
    // ok：是否到达极值点，flag4：是否出现4，flag8：是否出现8，flag_3_：是否有3个连在一起的数字

    // 剪枝条件：如果已经有4和8，则返回0，不再继续搜索
    if (flag4 == 1 && flag8 == 1) return 0;

    // 终止条件：k为0时检查条件
    if (k == 0) {
        // 如果没有同时出现4和8且有3个连在一起的数字，返回1表示可行
        if (!(flag4 == 1 && flag8 == 1) && flag_3_) {
            return 1; // 返回这个数是可行的。
        }
        return 0; // 返回这个数是不可行的。
    }

    int end = ok ? a[k] : 9; // 判断是否到达极值点
    int s = 0; // 初始化计数器

    // 如果已经计算过，则直接返回记忆化结果
    if (t[ok][flag4][flag8][flag_3_][last1][last2][k] != -1)
        return t[ok][flag4][flag8][flag_3_][last1][last2][k];

    // 在当前位上从0到end进行遍历
    for (int i = 0; i <= end; i++) {
        // 递归调用DFS，统计符合条件的数字数量
        s += dfs(k - 1, i, last1, ok && i == end, flag4 || i == 4, flag8 || i == 8,
                  (i == last1) && (last1 == last2) || flag_3_);
        // 把返回的每个数都加上，就是统计以搜到的这个数为前缀的符合条件的数的总数
    }

    t[ok][flag4][flag8][flag_3_][last1][last2][k] = s; // 保存记忆化结果
    return s; // 返回符合条件的数量
}

// 拆分数字并进行计数的函数
long long chai(long long n) {
    memset(a, 0, sizeof(a)); // 清空a数组
    memset(t, -1, sizeof(t)); // 清空t数组并初始化为-1

    int i = 0;
    while (n != 0) { // 将数字拆分并存入a数组中
        i++;
        a[i] = n % 10; // 存储当前位数字
        n /= 10; // 去掉当前位数字
    }

    if (i != 11) return 0; // 如果不是11位则返回0

    long long s = 0;
    for (int j = 1; j <= a[i]; j++) { // 第一层先运行好，减少时间复杂度。
        s += dfs(i - 1, j, -1, j == a[i], j == 4, j == 8, 0); 
        // 从第一位开始进行DFS搜索，统计符合条件的数量
    }
    
    return s; // 返回符合条件的数量
}

int main() {
    long long n, m; // 定义输入范围n和m（注意：此题每一个数据（包括样例）都包int）
    cin >> n >> m; // 输入范围n和m
    cout << chai(m) - chai(n - 1) << endl; // 输出范围内符合条件的手机号码数量
    return 0; // 程序结束
}